草庐IT

C++ operator+ 和 operator+= 重载

全部标签

c++ - 运算符<<重载

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Operatoroverloading我没有找到任何可以帮助我解决这个问题的东西......我正在尝试过载,这是我的代码:ostream&Complex::operator这是H文件中的声明:ostream&operator我得到这个错误:error:std::ostream&Complex::operator我做错了什么以及为什么做错了?谢谢

c++ - initializer_list 和默认构造函数重载决议

#include#includeusingnamespacestd;structY{};structX{X(initializer_list){cout这会打印出“boo”。为什么它不打印出“yay”?无论如何要区分以下两种结构:X()X{}或returnX();返回{};或voidg(constX&)g(X())g({})谢谢。 最佳答案 Isthereanywaytodifferentiatethefollowingtwoconstructions:没有。它们不是不同的结构。{}构造函数语法的主要目的是引入统一初始化,让初始化工

c++ - 没有上下文类型信息的重载函数 |无法根据转换为类型 'swap' 解析重载函数 'int'

我正在尝试编写自己的冒泡排序算法作为练习。我不明白这两个错误消息。谁能指出我的代码的问题?//Bubblesortalgorithm#include#includeusingnamespacestd;voidbubbleSort(intarray[],intarraySize);//bubbleSortprototypeintmain(void){constintarraySize=10;intarray[arraySize]={2,3,6,5,7,8,9,3,7,4};coutarray[i+1]){swap=array[i+1];array[i+1]=array[i];array[

c++ sizeof operator - 指向double的指针

我在使用sizeof运算符(C++)时得到了意想不到的结果。在主课中,我有这些行double*arguments_=newdouble();*arguments_=2.1;*(arguments_+1)=3.45;cout这给我输出480Doublesize是8个字节,而且(sizeofarguments_[0])=8。但是,为什么(sizeofarguments_)也不是用字节表示的(2*8=16)?sizeof运算符是否适用 最佳答案 两个值都以相同的单位表示。你有一个32位系统,所以地址的大小是32位,或4个字节。在你的系统上

C++ 运算符 < 重载

我对WordEntry.h:classWordEntry{public:WordEntry(stringword);~WordEntry();booloperatorWordEntry.cpp(我删除了构造函数和析构函数):stringWordEntry::getWord(){return_word;}boolWordEntry::operator当我像这样在main.cpp中使用它时,一切都很好:WordEntryw1("Der");WordEntryw2("das");if(w1.operatorw2";}else{coutw1";}但是当我在带有WordEntry对象的vecto

c++ - 在 C++ 中输出短路 `operator<<`

我有一些代码散布着这样的结构if(debug){Output现在我想做的是写一个流类Debug,我可以这样写Debug如果设置了一些全局标志,那么这将生成输出,否则不会。现在:这可以很容易地通过使Debug返回一个流到/dev/null来完成,这将吞噬输出。问题是f1()仍然会被评估(并“渲染”成可能更昂贵的文本表示),这可能对性能非常不利。现在我的问题是:是否有任何技巧可以跳过的“评估”"f1:"如果Debug决定不应该进行任何输出,则完全?类似于C++为f()&&g()做的短路,如果f()是false(我认真考虑过编写一个使用&&作为输出运算符的流类,但从我读到的内容来看,对于重载

c++ - C++ 和重载运算符的新手,不确定如何使用该函数

嗨,我是C++的新手,我在学习了一些Java基础知识后才开始学习它。我有预先存在的代码,它已经重载了>>>运算符,但是在看了很多教程并试图理解这个问题之后,我想我会在这里问。合理的cpp文件:#include"Rational.h"#includeRational::Rational(){}Rational::Rational(intn,intd){n_=n;d_=d;}/***Createsarationalnumberequivalenttoother*/Rational::Rational(constRational&other){n_=other.n_;d_=other.d_;

c++ - 对虚重载函数感到困惑

这个问题在这里已经有了答案:Functionwithsamenamebutdifferentsignatureinderivedclass(2个答案)关闭7年前。我对以下代码的编译器错误感到困惑:classBase{public:virtual~Base(){}virtualvoidfunc(){}virtualvoidfunc(int){}virtualvoidanother(){}virtualvoidanother(int){}};classDerived:publicBase{public:voidfunc(){}};intmain(){Derivedd;d.func();d.

C++重载->,它是如何工作的?

为什么我要在此代码中重载->运算符classsubobj{public:voidget(){printf("ea");}};templateclasstestPT{public:T*operator->(){returnptr;}T*ptr;};intmain(){subobjmyobj;testPTmyclass;myclass.ptr=&myobj;myclass->get();return0;}我打印了“ea”字符串?通过使用“myclass->”,它应该只返回一个T*,一个指向对象的指针。我应该做类似的事情我的类->->get()实际调用get()例程。我哪里错了?

c++ - C++ 运算符重载 C++

这两个代码中哪一个是正确的,为什么?CC::operator++(){x++;y++;return*this;}C&C::operator++(){x++;y++;return*this;}谢谢 最佳答案 第二个是惯用的:无参数的operator++是前缀增量运算符,它应该返回对self的引用。 关于c++-C++运算符重载C++,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2